package br.com.sisat.util;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class ObjectUtil {
	
	private static final Locale BRAZIL = new Locale("pt","BR");
	private static final DecimalFormatSymbols REAL = new DecimalFormatSymbols(BRAZIL);
	public static final DecimalFormat DINHEIRO_REAL_SIFRAO = new DecimalFormat("¤ ###,###,##0.00",REAL);
	public static final DecimalFormat DINHEIRO_REAL = new DecimalFormat("###,###,##0.00",REAL);
	
	
	public static boolean isEmpty(Object objeto){
		if(objeto instanceof String)
			return stringIsEmpty((String)objeto);
		else if (objeto instanceof List) 
			return collectionIsEmpty((List)objeto);
		else if(objeto instanceof Integer)
			return integerIsEmpty((Integer)objeto);
		else if(objeto instanceof java.util.Date)
			return dateIsEmpty((java.util.Date)objeto);
		else if(objeto instanceof Object[]){
			return ((Object[])objeto).length==0;
		}
		else	
			return objectIsNull(objeto);
	}
	
	public static String retirarMascara(String texto) {
		String retorno = "";
		if (texto == null || texto.equals("")) {
			retorno = null;
		} else {
			texto = texto.replace(".", " ");
			texto = texto.replace("/", " ");
			texto = texto.replace("-", " ");
			texto = texto.replace(" ", "");
			texto = texto.replace("(", "");
			texto = texto.replace(")", "");
			retorno = texto;
		}
		return retorno;
	}
	
	private static boolean dateIsEmpty(Date objeto) {
		if(objeto == null)
			return true;
		else 
			return false;
	}


	private static boolean collectionIsEmpty(List lista){
		if(lista == null)
			return true;
		else if(lista.isEmpty())
			return true;
		else if(lista.size() == 0 )
			return true;
		else 
			return false;
	}
	
	public static boolean stringIsEmpty(String valor){
		if(valor == null)
			return true;
		else if(valor.equals(""))
			return true;
		else 
			return false;
	}
	
	private static boolean objectIsNull(Object objeto){
		if(objeto == null)
			return true;
		else
			return false;
	}
	
	public static String[] split(String valor, String string){
		String value = valor.replace(string, "@");
		return value.split("@");
	}
	
		
//	public static String mountMD5(String valor){
//		try {
//		      MessageDigest md = MessageDigest.getInstance("MD5");
//		      md.update(valor.getBytes());
//		      byte[] enc = md.digest();
//		      String md5Sum = new sun.misc.BASE64Encoder().encode(enc);
//		      return md5Sum;
//		 } catch (NoSuchAlgorithmException nsae) {
//		      System.out.println(nsae.getMessage());
//		      return null;
//		 }
//	}
	
	public static boolean integerIsEmpty(Integer valor){
		if(valor == 0)
			return true;
		else 
			return false;
	}
	
	public static String montaValorDouble(String valor){
		String retorno="";
		if (  valor == null || valor.equals("") ) {
			valor = "0";
		}
		char[] arrValor = valor.toCharArray();
		for(int i=0;i<valor.length();i++){
			if(arrValor[i] == '.'){
				continue;
			}else if(arrValor[i] == ','){
				retorno+=".";
			}else{
				retorno+=arrValor[i];
			}
		}
		return retorno;
	}
	
	public static String mascaraDinheiroSemCifrao(double valor){    
		return DINHEIRO_REAL.format(valor);    
	}
	
	public static String mascaraDinheiroCifrao(double valor){    
		return DINHEIRO_REAL_SIFRAO.format(valor);    
	}
	
	public static String montaUnidade(String unidade){
		String formatado = unidade;
		for (int i = formatado.length(); i < 4; ++i) {
			formatado = "0"+formatado; 
		}
		return formatado;    
	}
	
	public static String montaContrato(String contrato){
		if( !ObjectUtil.isEmpty(contrato) ){
			while(contrato.length()< 16){
				contrato = "0"+contrato;
			}
			StringBuilder builder = new StringBuilder( contrato );
			builder.insert(4, ".");
			builder.insert(8, ".");
			builder.insert(17, "-");
			
			return builder.toString();
		}
		return "";
	}
	
	public static String montaQuantidadeRelatorio( Integer valor ){
		if( !ObjectUtil.isEmpty( valor) ){
			String valorStr =  valor.toString();
			StringBuilder builder = new StringBuilder( valorStr );
			
			if ( valorStr.length() == 4 ){
				builder.insert(1, ".");
			}
			if ( valorStr.length() == 5 ){
				builder.insert(2, ".");
			}
			if ( valorStr.length() == 6 ){
				builder.insert(3, ".");
			}
			if ( valorStr.length() == 7 ){
				builder.insert(1, ".");
				builder.insert(5, ".");
			}
			if ( valorStr.length() == 8 ){
				builder.insert(2, ".");
				builder.insert(6, ".");
			}
			if ( valorStr.length() == 9 ){
				builder.insert(3, ".");
				builder.insert(7, ".");
			}
			
			return builder.toString();
		}
		return "0";
	}
	
	public static void main (String args [] ){
		Double v = new Double( 3333333.33 );
		System.out.println( mascaraDinheiroSemCifrao( v ) );
	}
	
	
}